import axios from 'axios';
import store from '@/store'; // 引入 Vuex 存储
import { Message } from 'element-ui';
import router from '@/router'; // 引入路由实例
// 设置基础 API URL
const baseURL = '/api';

// 创建 Axios 实例
const apiClient = axios.create({
    baseURL: baseURL,
});

// 请求拦截器（可选）
apiClient.interceptors.request.use(
    config => {
        // 在请求头中添加 token
        const token = store.state.token;
        if (token) {
            config.headers.Authorization = token;
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器（可选）
apiClient.interceptors.response.use(
    (response) => {
        if (response.config.responseType === "blob") {
          return response; // ⚠️ 直接返回 Blob 响应
        }
        return response.data;
      },
    error => {
        if (error.response && error.response.status === 401) {
            Message.error('登录已过期，请重新登录');
            store.commit('setToken',null);
            router.push('/login');
            
        }
        console.error('API 请求错误:', error.response || error.message);
        return Promise.reject(error);
    }
);

// 封装 HTTP 请求方法
const request = {
    get: (url, params = {}, responseType = "json") =>
        apiClient.get(url, { params, responseType }),
    post: (url, data = {}) => apiClient.post(url, data),
    put: (url, data = {}) => apiClient.put(url, data),
    delete: (url, params = {}) => apiClient.delete(url, { params }),
};

export default request;
